/**
 * 环境配置
 * 根据微信小程序版本（开发版、体验版、正式版）自动切换环境
 */

// 环境类型
export type EnvType = 'develop' | 'trial' | 'release'

// 环境配置接口
interface EnvConfig {
  name: string           // 环境名称
  baseURL: string        // API 基础地址
  timeout: number        // 请求超时时间
  appId: string          // 微信小程序 AppID
  debug: boolean         // 是否开启调试模式
}

/**
 * 获取当前微信小程序版本
 * develop: 开发版
 * trial: 体验版
 * release: 正式版
 */
const getMiniProgramEnv = (): EnvType => {
  try {
    // #ifdef MP-WEIXIN
    const accountInfo = uni.getAccountInfoSync()
    const envVersion = accountInfo.miniProgram.envVersion
    return envVersion as EnvType
    // #endif

    // #ifndef MP-WEIXIN
    // 非微信小程序环境，默认返回开发版
    return 'develop'
    // #endif
  } catch (error) {
    console.warn('获取小程序版本失败，使用开发环境:', error)
    return 'develop'
  }
}

/**
 * 各环境配置
 * 请根据实际情况修改各环境的 API 地址
 */
const envConfigs: Record<EnvType, EnvConfig> = {
  // 开发版（开发者工具、开发版小程序）
  develop: {
    name: '开发环境',
    baseURL: 'http://localhost:3000',           // 本地开发服务器
    timeout: 30000,                              // 开发环境超时时间较长，方便调试
    appId: '',                                   // 测试 AppID（可选）
    debug: true                                  // 开启调试
  },

  // 体验版（体验版小程序）
  trial: {
    name: '体验环境',
    baseURL: 'https://test-api.yourdomain.com',  // 测试服务器地址
    timeout: 15000,
    appId: '',                                   // 正式 AppID
    debug: true                                  // 开启调试
  },

  // 正式版（线上版本）
  release: {
    name: '正式环境',
    baseURL: 'https://api.yourdomain.com',       // 生产服务器地址
    timeout: 10000,
    appId: '',                                   // 正式 AppID
    debug: false                                 // 关闭调试
  }
}

// 获取当前环境
const currentEnv = getMiniProgramEnv()
const currentConfig = envConfigs[currentEnv]

// 打印当前环境信息
console.log('='.repeat(50))
console.log(`🚀 当前环境: ${currentConfig.name} (${currentEnv})`)
console.log(`📡 API 地址: ${currentConfig.baseURL}`)
console.log(`🐛 调试模式: ${currentConfig.debug ? '开启' : '关闭'}`)
console.log('='.repeat(50))

// 导出配置
export const ENV_TYPE = currentEnv
export const BASE_URL = currentConfig.baseURL
export const REQUEST_TIMEOUT = currentConfig.timeout
export const WECHAT_APP_ID = currentConfig.appId
export const DEBUG_MODE = currentConfig.debug

// Token 存储 key
export const TOKEN_KEY = 'accessToken'
export const REFRESH_TOKEN_KEY = 'refreshToken'
export const USER_INFO_KEY = 'userInfo'

// 微信小程序配置
export const WECHAT_CONFIG = {
  appId: WECHAT_APP_ID,
}

/**
 * 是否为开发环境
 */
export const isDevelopment = () => currentEnv === 'develop'

/**
 * 是否为体验环境
 */
export const isTrial = () => currentEnv === 'trial'

/**
 * 是否为正式环境
 */
export const isProduction = () => currentEnv === 'release'

/**
 * 获取完整的环境配置
 */
export const getEnvConfig = () => currentConfig

export default {
  ENV_TYPE,
  BASE_URL,
  REQUEST_TIMEOUT,
  TOKEN_KEY,
  USER_INFO_KEY,
  WECHAT_CONFIG,
  WECHAT_APP_ID,
  DEBUG_MODE,
  isDevelopment,
  isTrial,
  isProduction,
  getEnvConfig
}

